import '../models/maintenance_models.dart';
import '../services/api_service.dart';

/// 维护数据配置类
class MaintenanceDataConfig {
  // 静态配置数据保持不变
  static final Map<String, List<Map<String, dynamic>>> _staticConfig = {
    'smartAirOutletControl': [
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'VF01',
        'address': 'DB6.DBD220',
        'dataType': 'REAL',
        'dataName': '设定风量',
        'unit': 'CMH',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'VF02',
        'address': 'DB6.DBD224',
        'dataType': 'REAL',
        'dataName': '手动风阀开度',
        'unit': '%',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'VF03',
        'address': 'DB6.DBD228',
        'dataType': 'REAL',
        'dataName': '设定风量',
        'unit': 'CMH',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'VF04',
        'address': 'DB6.DBD232',
        'dataType': 'REAL',
        'dataName': '手动风阀开度',
        'unit': '%',
      },
      {
        'name': '杀菌',
        'cubicleNo': '7、8',
        'deviceNo': 'PLC003',
        'tag': 'VF05',
        'address': 'DB6.DBD236',
        'dataType': 'REAL',
        'dataName': '设定风量',
        'unit': 'CMH',
      },
      {
        'name': '杀菌',
        'cubicleNo': '7、8',
        'deviceNo': 'PLC003',
        'tag': 'VF06',
        'address': 'DB6.DBD240',
        'dataType': 'REAL',
        'dataName': '手动风阀开度',
        'unit': '%',
      },
    ],
    'airOutletUsageTimeReset': [
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'Time01',
        'address': 'DB11.DBX80.0',
        'dataType': 'bool',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'Time02',
        'address': 'DB11.DBX80.1',
        'dataType': 'bool',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'Time03',
        'address': 'DB11.DBX80.2',
        'dataType': 'bool',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'Time04',
        'address': 'DB11.DBX80.3',
        'dataType': 'bool',
      },
    ],
    'roomPressureDifferenceControl': [
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
       {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
       {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
       {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
       {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
       {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
       {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
       {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
       {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'PT01',
        'address': 'DB9.DBD0',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
      {
        'name': '均质',
        'cubicleNo': '5、6',
        'deviceNo': 'PLC002',
        'tag': 'PT02',
        'address': 'DB9.DBD4',
        'dataType': 'REAL',
        'dataName': '房间压差设定',
        'unit': 'Pa',
      },
    ],
    'roomExhaustControl': [
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01a',
        'address': 'DB9.DBD52',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01b',
        'address': 'DB9.DBD56',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01a',
        'address': 'DB9.DBD52',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01b',
        'address': 'DB9.DBD56',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01a',
        'address': 'DB9.DBD52',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01b',
        'address': 'DB9.DBD56',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01a',
        'address': 'DB9.DBD52',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01b',
        'address': 'DB9.DBD56',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01a',
        'address': 'DB9.DBD52',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01b',
        'address': 'DB9.DBD56',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
      {
        'name': '收奶、膜',
        'cubicleNo': '1#、2#、3#、4#',
        'deviceNo': 'PLC001',
        'tag': 'FAN01a',
        'address': 'DB9.DBD52',
        'dataType': 'REAL',
        'dataName': '手动排风频率',
        'unit': 'Hz',
      },
    ],
    'xf01AirConditionerUnitControl': [
      {
        'tag': 'T03',
        'address': 'DB3.DBD32',
        'dataType': 'REAL',
        'name': '设置温度',
        'unit': '℃',
        'remark': '操作数据',
      },
      {
        'tag': 'S03',
        'address': 'DB3.DBD36',
        'dataType': 'REAL',
        'name': '设置运行频率',
        'unit': 'Hz',
        'remark': '操作数据',
      },
    ],
    'xf02AirConditionerUnitControl': [
      {
        'tag': 'T04',
        'address': 'DB4.DBD32',
        'dataType': 'REAL',
        'name': '设置温度',
        'unit': '℃',
        'remark': '操作数据',
      },
      {
        'tag': 'S04',
        'address': 'DB4.DBD36',
        'dataType': 'REAL',
        'name': '设置运行频率',
        'unit': 'Hz',
        'remark': '操作数据',
      },
    ],
  };
  
  /// 获取维护数据配置
  /// 对于roomExhaustControl，从API获取数据
  /// 其他配置使用静态数据
  static Future<Map<String, List<Map<String, dynamic>>>> getMaintenanceDataConfig() async {
    final config = Map<String, List<Map<String, dynamic>>>.from(_staticConfig);
    
    try {
      // 从API获取房间排风控制数据
      final roomExhaustData = await ApiService.getRoomExhaustControlData();
      config['roomExhaustControl'] = roomExhaustData;

      print('roomExhaustControl: ${config['roomExhaustControl']}');

    } catch (e) {
      print('获取房间排风控制数据失败，使用默认数据: $e');
      // 如果API调用失败，使用默认的空列表或fallback数据
      config['roomExhaustControl'] = [];
    }
    
    return config;
  }
  
  /// 获取静态配置数据（向后兼容）
  static Map<String, List<Map<String, dynamic>>> get staticConfig => _staticConfig;
}

// 为了向后兼容，保留原有的全局变量
// 但现在它将返回空的roomExhaustControl数据
final Map<String, List<Map<String, dynamic>>> maintenanceDataConfig = {
  ...MaintenanceDataConfig.staticConfig,
  'roomExhaustControl': [], // 现在通过API获取
};